package br.com.ceped.modelo;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


@Entity
@Table(name="tbl_reserva")
public class Reserva implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@EmbeddedId	
	private Reserva_PK reserva_PK = new Reserva_PK();
	
	@ManyToOne(optional = false, fetch = FetchType.LAZY)
	@JoinColumn(name="codigo_curso")
	private Curso curso;
	
	@ManyToOne(optional = true, fetch = FetchType.LAZY)
	@JoinColumn(name="codigo_laboratorio")
	private Laboratorio laboratorio;
	
	@ManyToOne(optional = true, fetch = FetchType.LAZY)
	@JoinColumn(name="codigo_sala")
	private Sala sala;
	
	@Column(name="periodo", length = 7, nullable = true)
	private String periodo;
	
	@Column(name="condicao", nullable = true)
	private String condicao;
	
	@ManyToOne(optional = true, fetch = FetchType.LAZY)
	@JoinColumn(name="codigo_administrador_posse")
	private Usuario administrador_posse;
	
	@Temporal(TemporalType.DATE)
	@Column(name="data_da_posse", nullable=true)
	private Date data_da_posse;
	
	@ManyToOne(optional = true, fetch = FetchType.LAZY)
	@JoinColumn(name="codigo_administrador_baixa")
	private Usuario administrador_baixa;
	
	@Temporal(TemporalType.DATE)
	@Column(name="data_da_baixa", nullable=true)
	private Date data_da_baixa;

	public Curso getCurso() {
		return curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

	public String getPeriodo() {
		return periodo;
	}

	public void setPeriodo(String periodo) {
		this.periodo = periodo;
	}

	public String getCondicao() {
		return condicao;
	}

	public void setCondicao(String condicao) {
		this.condicao = condicao;
	}

	public Usuario getAdministrador_posse() {
		return administrador_posse;
	}

	public void setAdministrador_posse(Usuario administrador_posse) {
		this.administrador_posse = administrador_posse;
	}

	public Date getData_da_posse() {
		return data_da_posse;
	}

	public void setData_da_posse(Date data_da_posse) {
		this.data_da_posse = data_da_posse;
	}

	public Usuario getAdministrador_baixa() {
		return administrador_baixa;
	}

	public void setAdministrador_baixa(Usuario administrador_baixa) {
		this.administrador_baixa = administrador_baixa;
	}

	public Date getData_da_baixa() {
		return data_da_baixa;
	}

	public void setData_da_baixa(Date data_da_baixa) {
		this.data_da_baixa = data_da_baixa;
	}

	public Reserva_PK getReserva_PK() {
		return reserva_PK;
	}

	public void setReserva_PK(Reserva_PK reserva_PK) {
		this.reserva_PK = reserva_PK;
	}

	public Laboratorio getLaboratorio() {
		return laboratorio;
	}

	public void setLaboratorio(Laboratorio laboratorio) {
		this.laboratorio = laboratorio;
	}

	public Sala getSala() {
		return sala;
	}

	public void setSala(Sala sala) {
		this.sala = sala;
	}


	
	
	

}
